type int = number;
//class ClassTypesUtil

    export  class ClassTypesUtil
    {
        

        public static isArrayTheSameValue(arg1: Array<any>, arg2: Array<any>): Boolean
        {
            if (arg1 == null && arg2 == null) 
            {
                return true;
            }
            if (arg1 == null || arg2 == null) 
            {
                return false;
            }
            if (arg1.length != arg2.length) 
            {
                return false;
            }
            if (arg1.length == 0 && arg2.length == 0) 
            {
                return true;
            }
            var loc1=0;
            while (loc1 < arg1.length) 
            {
                if (arg1[loc1] != arg2[loc1]) 
                {
                    return false;
                }
                ++loc1;
            }
            return true;
        }

        public static getBitValue(arg1: int, arg2: int): int
        {
            if (arg2 < 0) 
            {
                return 0;
            }
            var loc1=1 << arg2;
            return (arg1 & loc1) >> arg2;
        }

        public static getSetBitValueResult(arg1: int, arg2: int, arg3: int): int
        {
            if (arg2 < 0) 
            {
                return arg1;
            }
            return arg1 | arg3 << arg2;
        }

        public static getHighestBitPlace(arg1: int): int
        {
            var loc1=31;
            while (loc1 > 0) 
            {
                if ((1 << (loc1 - 1) & arg1) > 0) 
                {
                    return loc1;
                }
                --loc1;
            }
            return 0;
        }

        public static copyValue(arg1: Object, arg2: Object): void
        {
            var loc1=null;
            var loc2=0;
            var loc3=arg2;
            for (loc1 in loc3) 
            {
                arg1[loc1] = arg2[loc1];
            }
            return;
        }
    }
